home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / pcr / pcr4_4.lha / DIST / loading / fixcore.c < prev    next >
C/C++ Source or Header  |  1989-01-05  |  1KB  |  41 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <a.out.h>
  4. #include <sys/core.h>
  5. #include <errno.h>
  6.  
  7. main(argc, argv)
  8. int argc;
  9. char **argv;
  10. {
  11.   FILE *corefile, *modelfile;
  12.   struct core coreheader;
  13.   struct exec modelheader;
  14.   if (argc < 3) {
  15.     printf("Usage: %s corefile modelfile.\n", argv[0]);
  16.     exit(1);
  17.   }
  18.   if ((corefile = fopen(argv[1], "r+")) == NULL) {
  19.     fprintf(stderr, "Could not open core file '%s', errno = %d.\n", argv[1], errno);
  20.     exit(2);
  21.   }
  22.   if ((modelfile = fopen(argv[2], "r+")) == NULL) {
  23.     fprintf(stderr, "Could not open model file '%s', errno = %d.\n", argv[2], errno);
  24.     exit(3);
  25.   }
  26.   fread(&coreheader, sizeof(coreheader), 1, corefile);
  27.   fread(&modelheader, sizeof(modelheader), 1, modelfile);
  28.   if (coreheader.c_aouthdr.a_magic != OMAGIC) {
  29.     fprintf(stderr, "Core not of type 'OMAGIC'.\n");
  30.     exit(4);
  31.   }
  32.   if (modelheader.a_magic != OMAGIC) {
  33.     fprintf(stderr, "Model not of type 'OMAGIC'.\n");
  34.     exit(4);
  35.   }
  36.   coreheader.c_aouthdr.a_data = modelheader.a_data + modelheader.a_text;
  37.   rewind(corefile);
  38.   fwrite(&coreheader, sizeof(coreheader), 1, corefile);
  39.   exit(0);
  40. }
  41.